<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>付款</title>
</head>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<%@ page import="com.alipay.api.*" %>
<%@ page import="com.alipay.api.request.*" %>
<%@ page import="config.AlipayConfig" %>
<%@ page import="utile.GenerateNum" %>
<%@ page import="model.Order" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="service.OrderService" %>
<%@ page import="service.impl.OrderServiceImpl" %>
<%@ page import="service.ShoppingcartService" %>
<%@ page import="service.impl.ShoppingcartServiceImpl" %>
<%
    //获得初始化的AlipayClient
    AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);

    //设置请求参数
    AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
    alipayRequest.setReturnUrl(AlipayConfig.return_url);
    alipayRequest.setNotifyUrl(AlipayConfig.notify_url);

    //商户订单号，商户网站订单系统中唯一订单号，必填
    String out_trade_no = GenerateNum.generateOrder();
    //付款金额，必填
    String total_amount = request.getParameter("total_amount");
    //订单名称，必填
    String subject = request.getParameter("subjectName");

    int uid = Integer.parseInt(request.getParameter("uid"));
    int sid = Integer.parseInt(request.getParameter("sid"));

    Order order = new Order();
    order.setUid(uid);
    order.setSid(sid);
    Date date = new Date();
    order.setState(0);
    order.setTradeNo(out_trade_no);
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    String startString = formatter.format(date);
    java.sql.Date sDate = java.sql.Date.valueOf(startString);
    order.setDate(sDate);

    OrderService orderService = new OrderServiceImpl();
    ShoppingcartService shoppingcartService = new ShoppingcartServiceImpl();

    orderService.insert(order);
    shoppingcartService.delete(uid, String.valueOf(sid));
    alipayRequest.setBizContent(
            "{\"out_trade_no\":\"" + out_trade_no + "\"," +
                    "\"total_amount\":\"" + total_amount +
                    "\"," + "\"subject\":\"" + subject +
                    "\"," + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}"
    );

    //请求
    String result = alipayClient.pageExecute(alipayRequest).getBody();

    //输出
    out.println(result);
%>
<body>
</body>
</html>